#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>


#if 0
int main() {
    pid_t pid=fork();// 调用fork()函数创建一个新的进程

    // 检查fork()函数的返回值以判断当前代码运行在父进程还是子进程
    if (pid < 0) {
        // fork()调用失败，创建进程出错
        fprintf(stderr, "Fork failed\n");
        return 1;
    } else if (pid == 0) {//子进程运行
        printf("Child process\n");
        // 这里可以编写子进程需要执行的代码
    } else {//父进程运行
        printf("Parent process\n");
        // 这里可以编写父进程需要执行的代码
    }
    return 0;
}
#endif

int main() {
    pid_t childPid = fork(); // 创建子进程
    int status;
    if (childPid < 0) {
        // 创建子进程失败
        perror("Fork error");
        exit(1);
    } else if (childPid == 0) {
        // 子进程代码
        printf("This is the child process.\n");
        sleep(5); // 子进程休眠5秒钟
        exit(0);
    } else {
        // 父进程代码
        printf("This is the parent process.\n");
        printf("Waiting for the child process to complete...\n");
        waitpid(childPid, &status, 0); // 父进程等待子进程的结束
        printf("Child process completed.\n");
    }
    return 0;
}